<?php

/**
 * \file
 * Classe `Boolean`.
 */

namespace pilar\Entities /* \cond */ ; /* \endcond */
{

/**
 * Membre booléen.
 *
 * \since 09/10/2008
 * \author Matthieu OVIEDO <matthieu.oviedo@gmail.com>
 */
class Boolean extends Member {

protected function loadDefaultParams() {
 parent::loadDefaultParams();

 $this->params->set(array(
  'formClass' => '\\pilar\\SimpleFormMembers\\BooleanChoice'
 ));

 $this->params->define(array(
  'defaultValue' => 'false' // Valeur par défaut.
 ));
}


protected function initialize() {
 parent::initialize();

 $this->addField(
  new \pilar\Entities\Fields\Bool(array(
   'defaultValue' => $this->get('defaultValue')
  ))
 );
}


protected function defaultFormMemberParams() {
 return array(
  'defaultValue' => $this->get('defaultValue')
 );
}


/**
 * Vérifie que les valeurs assignées au membre soient bien des booléens.
 *
 * Pour VRAI les valeurs acceptées sont \c TRUE, \c 'true' et \c 'yes'.
 * Pour FAUX les valeurs acceptées sont \c FALSE, \c 'false' et 'no'.
 *
 * \todo
 * Voir de déclarer le tableau des valeurs acceptées en static dans la classe
 * pour éviter d'avoir à le redéfinir à chaque appel de la méthode.
 *
 * \return \c TRUE si \a $value est acceptée comme booléen, \c FALSE sinon.
 */
public function acceptsFieldValue($fieldName, $value) {
 return in_array(
         $value,
         array(true, 'true', 'yes', false, 'false', 'no'),
         true
        );
}


/**
 * Convertit un booléen en une valeur compatible avec SQL.
 *
 * \c TRUE, \c 'true' et \c 'yes' deviennent 'true'.
 * \c FALSE, \c 'false' et 'no' deviennent 'false'.
 *
 * \return \c TRUE si \a $value est acceptée comme booléen, \c FALSE sinon.
 */
public function formatFieldValue($fieldName, $value) {
 return in_array(
         $value,
         array(true, 'true', 'yes'),
         true
        ) ? 'true' : 'false';
}


} // Class.

} // Namespace.

?>
